<%--
    Document   : LibraryBook
    Created on : 14.02.2010, 12:34:31
    Author     : Morfant
--%>


<%@page import="java.math.BigInteger"%>
<%@page import="stud.cp.user.valueobjects.Parameter"%>
<%@page import="stud.cp.user.plugins.designer.DishesPluginBeanLocal"%>
<%@page import="stud.cp.user.valueobjects.PropertyListValue"%>
<%@page import="stud.cp.user.valueobjects.DBObject"%>
<%@page import="stud.cp.user.valueobjects.UserType"%>
<%@page import="stud.cp.user.valueobjects.PropertyTypeDef"%>
<%@page import="stud.cp.core.plugins.Plugin"%>
<%@page import="stud.cp.user.valueobjects.DBObjectType"%>
<%@page import="java.beans.DesignMode"%>
<%@page import="stud.cp.user.valueobjects.PropertyGroup"%>
<%@page import="stud.cp.user.valueobjects.PropertyType"%>
<%@page import="java.util.List"%>
<%@page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8" language="java"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>


    <%@include file="/header.jsp" %>
    <body>
        <div class="page">
            <%@include file="/cap.jsp" %>
            <div id="main">
                <%DBObjectType objectType = (DBObjectType) request.getAttribute(PluginConst.OBJECT_TYPE);%>
                <h2>Новое блюдо. Тип - <%=objectType.getName()%> .</h2>
                <form action="<%= response.encodeURL("dishes-action.do")
                        + "?"
                        + PluginConst.SUBACTION
                        + "="
                        + PluginConst.NEW_DATA
                        + "&"
                        + PluginConst.OBJECT_TYPE_ID
                        + "="
                        + objectType.getObject_type_id()%>"
                      method="post"
                      name="<%= PluginConst.FORM_NAME%>">
                    <fieldset>
                        <legend>Данные</legend>
                        <p>
                            <span class="highlight-delete-item">
                                <label for="<%=PluginConst.OBJECT_NAME%>">Название блюда</label>
                            </span>
                            <input type="text"
                                   name="<%=PluginConst.OBJECT_NAME%>"
                                   value="" />
                            <span class="error"> *</span>
                        </p>
                        <p>
                            <span class="highlight-delete-item">
                                <label for="<%=PluginConst.OBJECT_DESCRIPTION%>">
                                    Описание блюда
                                </label>
                            </span>
                            <textarea id="description" 
                                      rows="7"
                                      name="<%=PluginConst.OBJECT_DESCRIPTION%>"></textarea>
                            <span class="error">
                                *
                            </span>
                        </p>

                        <p>
                            <span class="highlight-delete-item">
                                <label for="<%=""%>">
                                    Состав блюда
                                </label>
                            </span>

                        <div class="TopHeaderOfTree">
                            <div>Продукты: </div>
                            <ul class="Container">
                                <%List<DBObjectType> listOfProductsTypes =
                                            (List<DBObjectType>) request.getAttribute(DishesPluginBeanLocal.PRODUCT_OBJECT_TYPE_LIST);
                                    List<DBObject> listOfProducts;
                                    int i, j, numberOfProductTypes, numberOfProducts;
                                    i = 0;
                                    numberOfProductTypes = listOfProductsTypes.size();
                                    DBObjectType productType;
                                    DBObject product;
                                    List<Parameter> productParameterList;
                                    Parameter costParameter = null, storeTypeParameter = null;

                                    while (i < numberOfProductTypes) {
                                        productType = listOfProductsTypes.get(i);
                                        i++;%>            
                                <li class="Node IsRoot ExpandLeaf <%=((i == numberOfProductTypes) ? "IsLast" : "")%> ">
                                    <div class="Expand"></div>
                                    <div class="RootContent"><%=productType.getName()%></div>
                                    <ul class="Container">
                                        <%
                                            listOfProducts = (List<DBObject>) request.getAttribute(productType.getObject_type_id().toString());
                                            j = 0;
                                            numberOfProducts = listOfProducts.size();
                                            if (numberOfProducts > 0) {
                                                while (j < numberOfProducts) {
                                                    product = listOfProducts.get(j);
                                                    j++;
                                                    productParameterList =
                                                            (List<Parameter>) request.getAttribute(
                                                            DishesPluginBeanLocal.PRODUCT_PARAMETER_LIST_FOR_PRODUCT + "=" + product.getObject_id().toString());
                                                    for (Parameter param : productParameterList) {
                                                        if (param.getProperty_id().equals(PluginConst.COST_PROPERTY_ID)) {
                                                            costParameter = param;
                                                        }
                                                        if (param.getProperty_id().equals(PluginConst.STORE_TYPE_PROPERTY_ID)) {
                                                            storeTypeParameter = param;
                                                        }
                                                    }

                                        %>

                                        <li class="Node ExpandLeaf <%=((j == numberOfProducts) ? "IsLast" : "")%>">
                                            <!-- Стоимость продукта.  -->
                                            <input id="<%=(PluginConst.COST_PARAMETER + product.getObject_id().toString())%>" 
                                                   type="hidden" 
                                                   value="<%=costParameter.getValue()%>"/>
                                            <!-- Тип хранения продукта.  -->
                                            <input id="<%=(PluginConst.STORE_TYPE_PARAMETER + product.getObject_id().toString())%>" 
                                                   type="hidden" 
                                                   value="<%=storeTypeParameter.getProperty_list_value_id()%>"/>
                                            <div class="Expand"></div>
                                            <!-- Чекбокс, определяющих то, включается данный продукт в блюдо или нет. -->
                                            <input type="checkbox"
                                                   name="<%=DishesPluginBeanLocal.DISH_PRODUCT_IDS%>"
                                                   value="<%=product.getObject_id()%>" onclick="enableSubmit(this);" />
                                            <!-- Имя продуктаю -->
                                            <div name="Content" class="Content">
                                                <%=(product.getName())%> 
                                            </div>

                                        </li>

                                        <%}
                                        } else {%>
                                        <li class="Node ExpandLeaf IsLast">
                                            <div class="Expand"></div>
                                            <div class="Content">Продукты данного типа отсутствуют!</div>
                                        </li>
                                        <%}%>
                                    </ul>
                                </li>    
                                <%}%>
                            </ul>
                        </div>
                        </p>

                        <p>
                            <span class="highlight-delete-item">
                                <label for="<%=PluginConst.PRIME_DISH_COST%>">Себистоимость. (Вычисляется автоматически) </label>
                            </span>
                            <input readonly id="<%=PluginConst.PRIME_DISH_COST%>" name="<%=PluginConst.PRIME_DISH_COST%>">
                        </p>

                        <p>
                            <span class="highlight-delete-item">
                                <label for="<%=PluginConst.DISH_COST%>">Стоимость в рублях. (Для меню)</label>
                            </span>
                            <input id="<%=PluginConst.DISH_COST%>" name="<%=PluginConst.DISH_COST%>">

                            <span class="error"> *</span>
                        </p>

                        <p>
                            <span class="error"> *</span> - обязательные для заполнения поля.
                        </p>
                    </fieldset>
                    <p>
                        <input name="confirmButton" type="submit" value="Добавить" disabled/>
                    </p>
                </form>
                <script type="text/javascript">
        
                    $(function() {
                        $( "#<%=PluginConst.DISH_COST%>" ).spinner({
                            step: 1,
                            min:1,
                            numberFormat: "n",
                            max:10000000
                        }).live('keydown', function (event) { 
                            if ((event.keyCode < 48 || event.keyCode > 57) 
                                && (event.keyCode < 96 || event.keyCode > 105) 
                                && (event.keyCode != 8)) { 
                                event.preventDefault(); 
                            } 
                        }); 
                    });
                </script>
                <script type="text/javascript">
                    var frmvalidator = new Validator("<%=PluginConst.FORM_NAME%>");
                    frmvalidator.EnableMsgsTogether();
                    frmvalidator.addValidation("<%=PluginConst.OBJECT_NAME%>","req","Название блюда не может быть пустым!");
                    frmvalidator.addValidation("<%=PluginConst.OBJECT_NAME%>","maxlen=70","Слишком длинное название!");
                    frmvalidator.addValidation("<%=PluginConst.OBJECT_DESCRIPTION%>","req","Описание не может быть пустым!");
                    frmvalidator.addValidation("<%=PluginConst.OBJECT_DESCRIPTION%>","maxlen=70","Слишком много символов в описании!");
                    frmvalidator.addValidation("<%=PluginConst.DISH_COST%>","req","Стоимость не может быть не заданной!");
                    frmvalidator.addValidation("<%=PluginConst.DISH_COST%>","numeric","Стоимость должна быть числом!");
                    var is_checked  = false;
                    
                    function multFloats(a,b){
                        var atens = Math.pow(10,String(a).length - String(a).indexOf('.') - 1), 
                        btens = Math.pow(10,String(b).length - String(b).indexOf('.') - 1); 
                        var result = (a * atens) * (b * btens) / (atens * btens); 
                        return result;
                    }
                    
                    function onSpinnerChange() {
                        var listOfSpinner=$("input[name*='<%=PluginConst.AMOUNT%>']");
                        var beginOfIdLenght='<%=PluginConst.AMOUNT%>'.length;
                        var primeCost=0;
                        var spinner;
                        var spinnerName;
                        var costInput;
                        for(var i=0;i<listOfSpinner.length;i++){
                            spinner=listOfSpinner[i];
                            spinnerName=spinner.name;
                            costInput=$('"input[id=\''+'<%=PluginConst.COST_PARAMETER%>'+spinnerName.substr(beginOfIdLenght)+'\']"');
                            if(spinner.value!=null){
                                primeCost+=multFloats(costInput[0].value, spinner.value);
                            }
                        }
                        $('"input[id=\''+'<%=PluginConst.PRIME_DISH_COST%>'+'\']"')[0].value=primeCost;
                    }
                    
                    
                    function isAnyChecked(f) {
                        for (var i=0; i<f.elements.length; i++) {
                            if (f.elements[i].type == "checkbox" && f.elements[i].checked)
                                return true;
                        }
                        return false;
                    }
                    
                    
                    function enableSubmit(chBox) {
                        var f   = chBox.form;
                        if (chBox.checked){
                            is_checked = true;
                            var contentDiv=chBox.parentNode.children[4];
                            var cost=chBox.parentNode.children[0].value;
                            var storeTypeInput=chBox.parentNode.children[1];
                            var idValue='<%=PluginConst.AMOUNT%>'+chBox.value;
                            var tag='<div>'
                                +'Стоимость '
                                +(storeTypeInput.value==3?'за килограмм ':'за штуку ')
                                +'= '
                                +cost
                                +' рублей'
                                +'</div><ul class="Container">'
                                +'<li class="Node ExpandLeaf IsLast">'
                                +'<div class="Expand"></div>'
                                +'<div class="Content"><input id="'
                                +idValue
                                +'" name="'
                                +idValue
                                +'"/>'
                                + (storeTypeInput.value==3?'кг.':'шт.')
                                +'</div>'
                                +'</li></ul>';
                            var innerHTMLText=contentDiv.innerHTML.trim();
                            contentDiv.innerHTML += tag;
                            frmvalidator.
                                addValidation(idValue,"req",innerHTMLText
                                +(storeTypeInput.value==3?'Количество должно быть заданно!' :
                                'Вес должен быть задан'));
                            frmvalidator.
                                addValidation(idValue,"numeric",innerHTMLText
                                +(storeTypeInput.value==3?'Количество должно':'Вес должен')
                                +" быть числом!");
                            idValue='#'+idValue;
                            if(storeTypeInput.value==3){
                                $(function() {
                                    $( idValue ).spinner({
                                        step: 0.1,
                                        min:0.1,
                                        numberFormat: "n",
                                        max:1000,
                                        stop:function(){
                                            var spinnerValue=$(this)[0].value;
                                            if((spinnerValue!=null)&&(spinnerValue==0)){
                                                $(this).spinner("value",0.1);
                                            }
                                            onSpinnerChange();
                                        }
                                    }).spinner("value",0.1).live('keydown', function (event) { 
                                        if ((event.keyCode < 48 || event.keyCode > 57) 
                                            && (event.keyCode < 96 || event.keyCode > 105) 
                                            && (event.keyCode != 8)) { 
                                            event.preventDefault(); 
                                        } 
                                    }).mousewheel(function (event, delta) {
                                        onSpinnerChange();
                                    });
                                });  
                            }else{
                                $(function() {
                                    $( idValue ).spinner({
                                        step: 1,
                                        min:1,
                                        numberFormat:"n0",
                                        max:1000,
                                        stop:function(){
                                            var spinnerValue=$(this)[0].value;
                                            if((spinnerValue!=null)&&(spinnerValue==0)){
                                                $(this).spinner("value",1);
                                            }
                                            onSpinnerChange();
                                        }
                                    }).spinner("value",1).live('keydown', function (event) { 
                                        if ((event.keyCode < 48 || event.keyCode > 57) 
                                            && (event.keyCode < 96 || event.keyCode > 105) 
                                            && (event.keyCode != 8)) { 
                                            event.preventDefault(); 
                                        } 
                                    }).mousewheel(function (event, delta) {
                                        onSpinnerChange();
                                    });
                                });
                            }
                        }  
                        else{
                            is_checked = isAnyChecked(f);
                            var contentDiv=chBox.parentNode.children[4];
                            while(contentDiv.children.length>0){
                                contentDiv.removeChild(contentDiv.children[0]);
                            }
                        }
                        f.elements["confirmButton"].disabled   = is_checked ? false : true;
                        onSpinnerChange();
                    }
                </script>
                <div id="objectmenucontainer">
                    <ul id="objectmenu">
                        <li><a href="<%=response.encodeURL("dishes-action.do")
                                + "?"
                                + PluginConst.SUBACTION
                                + "="
                                + PluginConst.GET_LIST + "&"
                                + PluginConst.OBJECT_TYPE_ID + "="
                                + objectType.getObject_type_id()%>">Вернуться к списку блюд</a></li>
                    </ul>
                </div>
                <div id="footer">
                </div>
            </div>
        </div>
    </body>
</html>
